package cn.kgc.jdbc;

import cn.kgc.jdbc.entity.User;
import com.mysql.jdbc.Driver;

import java.sql.*;
import java.util.ArrayList;

/**
 * @author: mosin
 * @version: v1.0  2022/8/24
 */
public class JDBCDemo01 {

    /*
       java操作数据库的基本步骤
       1. 引入依赖  注册驱动
       2.获取连接对象    如何获取数据库的连接？
       3.获取发送sql语句的对象  发送sql语句
       4.处理结果集
       5.释放资源
    * */
    public static void main(String[] args) throws SQLException {
        // 创建驱动对象
        Driver driver = new Driver();
        // 注册驱动
        DriverManager.registerDriver(driver);

        /**
         *  获取连接  url   user  password    http://www.baidu.com/login.html
         *  url:  数据库的通信地址  jdbc:mysql://localhost:3306/java2216
         *  user：  数据的用户名  root
         *  password：  用户密码  root
         */
        String url = "jdbc:mysql://localhost:3306/java2216?useSSL=false";
        String username = "root";
        String password = "root";
        //获取数据库的连接
        Connection connection = DriverManager.getConnection(url, username, password);
        System.out.println("connection = " + connection);

        // 通过连接获取发送sql语句的对象  Statement
        Statement statement = connection.createStatement();
        //编写sql
        //String sql = "SELECT  *  FROM  user   WHERE id = 1";
        String sql = "SELECT  *  FROM  user ";
        // 发送sql语句到mysql数据库
        ResultSet resultSet = statement.executeQuery(sql);
        // 处理结果集  resultSet  resultSet.next()  查询数据结果集中是否还有下一条数据
        // 创建集合 存储查询结果中封装的数据
        ArrayList<User> users = new ArrayList<>();
        while (resultSet.next()){
            //获取当前记录中字段值  根据字段值的数据类型获取
            int id = resultSet.getInt("id");  //  通过字段名获取
            String uname = resultSet.getString(2);  //  通过字段的列索引
            String pwd = resultSet.getString("password");
            User user = new User().setId(id).setPassword(pwd).setUsername(uname);
            users.add(user);
            //System.out.println("user = " + user);
        }

        // 遍历集合
        //users.forEach(user-> System.out.println("user = " + user));

        for (User user : users) {
            System.out.println(user);
        }

        // 释放资源
        resultSet.close();
        statement.close();
        connection.close();

    }

}
